3. Machine Level Representation of Programs {CSAPP}
- parent: 0015.1 CSAPP Third Edition Bryant, Randal E. O'Hallaron, David. π»
- p.432 ~ p.752
- Hardware Knowledges for PintOS {swjungle}
λ³Έ μ₯μμλ μ»΄νμΌλ¬κ° λ§λ€μ΄λΈ μ΄μ λΈλ¦¬ μΈμ΄λ₯Ό κΈ°λ°μΌλ‘ λ€μν μ€νμ ν΄λ³Ό κ²μ΄λ€. λͺ λ Ή μ€ν μμλ₯Ό μ΄λ»κ² μ¬μ λ ¬ νλμ§, μ¬κ·νΈμΆμ λ°λ³΅λ¬ΈμΌλ‘ λ§λ€μ΄ μ±λ₯μ ν₯μμν¬ μ μμμ§μ λν λ΄μ©μ λ€λ£¬λ€. μ΄μ κ΅³μ΄ μ΄μ λΈλ¦¬ λ¨μΌλ‘ λ΄λ €κ°μ§ μμλ λλλ° κ΅³μ΄ μ΄μ λΈλ¦¬μͺ½ μ½λλ₯Ό νμ³λ³΄λ μ΄μ λ λ μ’μ C μ½λλ₯Ό μμ±νκΈ° μν΄μκΈ°μ΄λ νλ©°, λ©ν° μ€λ λ νλ‘κ·Έλλ°μμ 곡μ λλ μμκ³Ό μλ κ²λ€μ λν μ°¨μ΄λ₯Ό ꡬλ³νκΈ° μν΄μ, μ΄λ€ λ°©μμΌλ‘ μ μ±μ½λκ° λ©λͺ¨λ¦¬ 곡κ°μ μ μμ μΌλ‘ μ¬μ©ν μ μλμ§μ λν μΈμ¬μ΄νΈλ₯Ό μ»κΈ° μν΄μμ΄λ€.
INDEX
- 3.1 A Historical Perspective
- μμ¬μ κ΄μ μμμ κΈ°κ³μ΄? κ·Έλ¬λ©΄ MIPSλΆν° μμνλ?
- 3.2 Programming Encodings
- μΈμ½λ©, λμ½λ©μ κ°λ μ μνΈν 볡νΈνμ λμλ μλ μκ³ , μμΆνκΈ° μμΆνκΈ°μλ λμλ μ μλ€. μ¬κΈ°μμ μλ―Ένλ μΈμ½λ©μ λ¬΄μ¨ μλ―ΈμΌκΉ?
- 3.3 Data Formats
- λ°μ΄ν° ꡬ쑰, struct?
- βοΈ βοΈ 3.4 Accessing Information
- 80386, IA32, x86-64μ μ΄μ λ μ§μ€ν°λ€μ λͺ©λ‘κ³Ό κ·Έ μ©λμ λν΄ λ€λ£¬λ€.
- caller-saved, callee-saved λ μ§μ€ν°λ€μ μ°¨μ΄μ μ μ΄ν΄νλ€.
- 3.5 Arithmetic and Logical Operations
- load effective address (
leaq
) λ©λͺ¨λ¦¬ κ°μ λ°λ‘ μ°Έμ‘°νμ§ μμ. 볡μ‘ν μμμ μ¬λ¬λ² λ©λͺ¨λ¦¬λ₯Ό μ°Έμ‘°νμ§ μκ³ λ§μΉ μν곡λΆν λ x, y κ³μλ₯Ό μ‘°μ ν λ€μ ν λ°©μ μμ μ μννλ κ²κ³Όλ κ°λ€. - unary operation: λ¨νμ°μ°μ
- binary operation: μ΄νμ°μ°μ
- shift operation: μννΈ μ°μ°μ with %cl (amount of shift) and %salb, %salw, %sall, %salq
- load effective address (
- 3.6 Control
- 컨νΈλ‘€ νλ‘μ° = jmp, ν¨μ νΈμΆ, goto, λΆκΈ°, λ°λ³΅
- condition flags: 1bitμ§λ¦¬ νλκ·Έ λ μ§μ€ν°, μ μν μ€λ²νλ‘ μ¬λΆλ₯Ό νμ§νλ carry flag, μ§μ λͺ λ Ήμ΄κ° 0μ 리ν΄νλμ§λ₯Ό μ μ₯νλ zero flag, μ§μ λͺ λ Ήμ΄κ° μμλ₯Ό 리ν΄νλμ§λ₯Ό μ μ₯νλ sign flag, 2μ 보μλ‘ λνλΈ μμμ λ§μ§λ§ μ«μκ° μμλ‘ λμ΄κ°λμ§ μ¬λΆλ₯Ό νμ§νλ overflow flag
set
λͺ λ Ήμ΄λ€: cmp κ²°κ³Όλ₯Ό νΉμ jmp
λͺ λ Ήμ΄:loops
- βοΈ 3.7 Procedures
- 3.9 Heterogeneous Data Structure (μ΄μ’
λ°μ΄ν°κ΅¬μ‘°)
- μλ‘λ€λ₯Έ λ°μ΄ν°κ΅¬μ‘°? μλμλ€.
struct
,union
μ΄μλ€!
- μλ‘λ€λ₯Έ λ°μ΄ν°κ΅¬μ‘°? μλμλ€.
- 3.10 Combining Control and Data in Machine Level Programs
- λμκ³Ό λ°μ΄ν°λ₯Ό κΈ°κ³μμ€μ νλ‘κ·Έλ¨μμ μ¬μ©νλ λ°©λ²
- 3.11 Floating Point Code
- λΆλμμμ
- 3.12 Summary